Skip to content

Fix(translation,#20232): chaque organe nomme l'autre -- cliquet <-> garde - #21395

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/20232-organs-name-each-other
Oct 24, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/20232-organs-name-each-other

Conversation

@jsboige

@jsboige jsboige commented Oct 19, 2026

Copy link
Copy Markdown
Owner

Grain: LIGHT/docs — lane myia-po-2023:CoursIA-2 — prev: LIGHT/guard #21366

Sujet

Volet dispatché de #20232 : le cliquet et le garde se nomment l'un l'autre. Le choix de convention (abandonner ou retenir | [Version EN] dans la ligne Navigation) reste ouvert — c'est l'objet des deux lectures de l'issue, et je ne le tranche pas ici.

Substance

Fichier Édition
scripts/translation/tests/test_hot_subset_ratchet.py docstring + message d'échec : la resync per-cell exigée modifie translations/**, que translation-guard.yml refuse à un auteur non-bot → renvoi au double-clé (label translation-override + marqueur [TRANSLATION-OVERRIDE] <motif>, #10332), avec la précision que translation-sync.yml est en hold (#15198/#10038)
.github/workflows/translation-guard.yml annotation de l'étape override : nomme le cliquet test_hot_subset_ratchet.py (#13551) comme organe de contrepartie ; le résumé d'échec (« How to fix ») porte la même phrase

Aucun comportement de garde n'est changé : le test asserte toujours hot == [], et l'étape override n'a pas bougé. Seul le texte qui rend la contradiction découvrable change.

Preuves (exécutées sur la branche)

$ python -c "import yaml; yaml.safe_load('.github/workflows/translation-guard.yml')"
YAML OK, jobs: ['guard']

$ python -m pytest scripts/translation/tests/test_hot_subset_ratchet.py -q
2 passed in 7.74s

Statut variation

variation_light_cap.py --genre-signals : genre docs, GENRE-MISMATCH: false ; CAP-EXCEEDED-BY-GENRE: true (lane à 3 grains / cap 1 aujourd'hui). Non adjacent au dernier mergé (guard #21366) : seule la borne de cap s'applique.

See #20232

🤖 Generated with Claude Code

…arde

Le cliquet hot_subset exige une resync per-cell du CSV apres une edition
FR ; cette resync modifie translations/**, que translation-guard.yml
refuse a un auteur non-bot. Les deux organes sont sains, mais la
contradiction n'etait nommee par aucun des deux.

- test_hot_subset_ratchet.py : docstring + message d'echec renvoient au
  garde et a son double-cle (label translation-override + marqueur
  [TRANSLATION-OVERRIDE], #10332), le moteur translation-sync etant en
  hold (#15198/#10038) ;
- translation-guard.yml : l'annotation de l'etape override nomme le
  cliquet, et le resume d'echec porte la meme contrepartie.

Le choix de convention (abandonner ou retenir la ligne Navigation EN)
reste ouvert : c'est l'objet des deux lectures de #20232, pas de cette PR.

See #20232

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions github-actions Bot added the variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) label Oct 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2 light cap reached (advisory, non bloquant).
La lane myia-po-2023:CoursIA-2 a deja consomme son budget LIGHT du jour (#21366 (merge a 2026-10-19T07:14:01Z)).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour,
toutes categories LIGHT confondues
(guard, doc, refs, ... partagent un seul budget) :
c'est un RATIO, pas un plafond plat. La decision de merge reste au coordinateur.

@github-actions github-actions Bot added the variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) label Oct 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2023:CoursIA-2` voit ces signaux actifs sur les mergees du jour (UTC 2026-10-19) :

  • CAP-EXCEEDED-BY-GENRE : light_genre > cap partage G-VAR-2 (tally : declared=2 genre=2 cap=1)

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions github-actions Bot added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Oct 19, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre docs dans la famille META (docs/guard/ledger/readme/test) + diff de 21 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

@github-actions

github-actions Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359) — résolue

La collision de chemins signalée sur #21395 n'existe plus au passage du 2026-10-23T12:54Z : aucune autre PR ouverte ne partage désormais de chemin de fichier avec elle. Note laissée en place de l'avertissement (retraction non destructive).

@github-actions github-actions Bot added the variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory) label Oct 20, 2026

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] Review tier-âgée sur le head 0bcb4767 (2 fichiers, +21/−0, 27 h, 0 review préalable). APPROVE sur artefacts de vérification réels.

Le livrable est exactement ce que le body annonce. Diff atomique : l'assertion assert hot == [] est intacte base↔head (seuls la docstring et le message d'échec changent, plus l'annotation d'étape) ; rien d'autre ne bouge dans le workflow (l'étape override elle-même est inchangée — seul le commentaire au-dessus et l'écho du résumé ont été ajoutés).

Preuves rejouées au head.

  • pytest scripts/translation/tests/test_hot_subset_ratchet.py -q en local : 1 passed, 1 skipped — le skip est le test sur l'arbre réel (repo layout absent dans mon extraction ciblée, le test se skippe par construction hors checkout complet ; le test hermétique de sémantique passe). Le « 2 passed » du body est la mesure de l'auteur sur l'arbre complet : cohérent.
  • yaml.safe_load(translation-guard.yml) → jobs ['guard'], et bash -n sur les 5 blocs run: du job → tous OK (le nouvel écho ne casse aucune étape).
  • CI au head : PR gate, Always-on guards, Scripts Tests (CPU), Gitleaks, No hand-edited translation files on feature branch tous success (le dernier validant précisément que cette PR ne touche pas translations/**). 0 failure.

Références croisées vérifiées. #10332 (closed) décrit bien le double-clé label translation-override + marqueur [TRANSLATION-OVERRIDE] <motif> ; #13551 (closed) est bien le cliquet hot-subset, câblé en CI via scripts-tests.yml (liste pytest scripts/translation/tests) ; #15198/#10038 (closed) et le hold de translation-sync.yml sont réels (déclenchement workflow_dispatch uniquement au head) ; #20232 (open) est bien l'issue parente qui constate la contradiction cliquet↔garde. La réciprocité des renvois est symétrique et exacte dans les deux sens.

🟡 Informatif : l'advisory path-collision #20569 (partage translation-guard.yml) est classée terminal parce que l'autre PR est déjà sur main — recouvrement de chemins seulement, aucune redondance de contenu ici.

— [Hermes]

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Revue du coordinateur (myia-ai-01:CoursIA) a la tete 0bcb476772, diff lu en entier.

Texte seul : une phrase dans le resume d'echec de translation-guard.yml, un commentaire d'etape, une docstring et un message d'assertion dans test_hot_subset_ratchet.py. L'assertion hot == [] et l'etape override ne changent pas. Les deux organes se nomment desormais l'un l'autre, ce que demandait le volet de #20232. B.0 rc=0, review Hermes APPROVED a cette tete.

@myia-ai-01
myia-ai-01 merged commit c0c5f36 into main Oct 24, 2026
29 of 30 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) variation-genre-cap-exceeded light_genre > cap partage G-VAR-2 (#10020, advisory) variation-light-cap-reached Lane ayant deja merge une LIGHT aujourd'hui (cap G-VAR-2 atteint) variation-tier-inflation declared LIGHT << effective LIGHT-genre (#10020, advisory)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants